import { getRecommendMusic } from '@/hooks/randMusic'

// 定义歌曲信息接口
interface ISongInfo {
  title: string
  id: string
  src: string
  img: string
}

// 获取核心播放器实例
// @ts-ignore
const core: MusicPlayerCore = window._PlayerCore

// 原始方法备份
const originNextSong = core.NextSong.bind(core)
const originPrevSong = core.PrevSong.bind(core)

// 获取随机音乐（返回新对象）
const fetchNewSong = async (): Promise<ISongInfo> => {
  const res = await getRecommendMusic()
  return {
    title: res.anime_info.title,
    id: res.anime_info.id.toString(), // 确保ID为字符串
    src: res.play_url,
    img: res.anime_info.bg,
  }
}

// 初始化加载首曲
fetchNewSong().then((song) => {
  core.AppendSongOnTail(song)
//   core.PlaySelectSong(song.id) // 自动播放首曲
})

// 增强版下一曲方法
core.NextSong = async function () {
  try {
    // 获取并添加新歌曲
    const newSong = await fetchNewSong()

    // 防止重复添加相同ID
    if (!this.SongIdMap[newSong.id]) {
      this.AppendSongOnTail(newSong)
    }

    // 调用原始切换逻辑
    originNextSong()
  } catch (err) {
    console.error('切换下一曲失败:', err)
    // 失败时继续原始逻辑
    originNextSong()
  }
}

// 增强版上一曲方法
core.PrevSong = function () {
  const currentIdx = this.SongIdList.indexOf(this.CurrentSongId)

  // 处理动态列表边界
  if (currentIdx <= 0) {
    const lastIdx = this.SongIdList.length - 1
    if (lastIdx > 0) {
      this.PlaySelectSong(this.SongIdList[lastIdx])
    }
  } else {
    originPrevSong()
  }
}
